import { setmealApi } from '@/api/setmeal'

/**
 * 检查项接口
 * @typedef {Object} CheckItem
 * @property {number} id - 检查项ID
 * @property {string} code - 检查项编码
 * @property {string} name - 检查项名称
 * @property {string} sex - 适用性别
 * @property {string} age - 适用年龄
 * @property {number} price - 价格
 * @property {string} type - 检查项类型
 * @property {string} remark - 说明
 * @property {string} attention - 注意事项
 */

/**
 * 检查组接口
 * @typedef {Object} CheckGroup
 * @property {number} id - 检查组ID
 * @property {string} code - 检查组编码
 * @property {string} name - 检查组名称
 * @property {string} helpCode - 助记码
 * @property {string} sex - 适用性别
 * @property {string} remark - 说明
 * @property {string} attention - 注意事项
 * @property {Array<CheckItem>} checkItems - 检查项列表
 */

/**
 * 套餐详情信息接口
 * @typedef {Object} PackageDetail
 * @property {number} id - 套餐ID
 * @property {string} name - 套餐名称
 * @property {string} code - 套餐编码
 * @property {string} helpCode - 助记码
 * @property {string} sex - 适用性别
 * @property {string} age - 年龄范围
 * @property {number} price - 价格
 * @property {string} remark - 套餐说明
 * @property {string} attention - 注意事项
 * @property {string} img - 图片URL
 * @property {Array<CheckGroup>} checkGroups - 检查组列表
 */

/**
 * 获取体检套餐详细信息
 * @param {string|number} packageId - 套餐ID
 * @returns {Promise<PackageDetail>} 套餐详细信息
 */
export async function getPackageDetail(packageId) {
  if (!packageId) {
    throw new Error('套餐ID不能为空')
  }

  try {
    const response = await setmealApi.getCheckGroupItemBySetmealId(packageId)
    
    if (response.code === 200 && response.data) {
      // 确保返回的数据包含所有必要字段
      return {
        id: response.data.id || 0,
        name: response.data.name || '',
        code: response.data.code || '',
        helpCode: response.data.helpCode || '',
        sex: response.data.sex || '0',
        age: response.data.age || '',
        price: response.data.price || 0,
        remark: response.data.remark || '',
        attention: response.data.attention || '',
        img: response.data.img || '',
        checkGroups: response.data.checkGroups || []
      }
    }
    
    throw new Error(response.errorMessage || '获取套餐详情失败')
  } catch (error) {
    console.error('获取套餐详情失败:', error)
    throw error
  }
}

/**
 * 格式化套餐价格显示
 * @param {number} price - 价格（单位：元）
 * @returns {string} 格式化后的价格字符串
 */
export function formatPackagePrice(price) {
  if (!price && price !== 0) return '¥0.00'
  return `¥${Number(price).toFixed(2)}`
} 